(run-tests
 (list
 (lambda ()
   "Test create structures."
   (let ((object (new-woof-object
		  class: 1
		  fields: '()
		  prim-data: 2)))
     (assert-equal? 1 (woof-object-class object))
     (assert-equal? '() (woof-object-fields object))
     (assert-equal? 2 (woof-object-prim-data object))))
 
 (lambda ()
   "test class-by-name"
   (let ((globals (init-proto-globals! (new-woof-globals))))
     (assert-true (woof-class-object? (class-by-name "nil" globals)))))
 
 (lambda ()
   "test installation of STDOUT"
   (let ((globals (init-woof-globals! (new-woof-globals))))
     (assert-true (woof-object? (global-by-name "STDOUT" globals)))))
 
 (lambda ()
   "test create class"
   (let* ((globals (init-proto-globals! (new-woof-globals)))
	  (my-class (create-class "MyClass" (class-by-name "nil" globals) globals)))
     (assert-true (woof-class-object? my-class))))
 
 (lambda ()
   "Test install-function"
   (let* ((sig "print:")
	  (specs (list (new-woof-class-object)))
	  (func (woof-function-instance sig specs))
	  (globals (new-woof-globals))
	  )
     (install-function! func globals)
     (assert-eq? func (first (functions-by-sig "print:" globals)))))
 
 (lambda ()
   "After init, check installation of classes & funcs"
   (let ((globals (new-woof-globals)))
     (init-woof-globals! globals)
     (assert-not-false (class-by-name "nil" globals))
     (assert-not-false (class-by-name "Object" globals))
     (assert-not-false (class-by-name "String" globals))
     (assert-not-false (class-by-name "List" globals))
     (assert-not-false (class-by-name "Function" globals))
     (assert-false (equal? '() (functions-by-sig "define:over:as:" globals)))))
 
 (lambda ()
   "Test create a String object"
   (let ((globals (new-woof-globals)))
     (init-woof-globals! globals)
     (let ((w-string (woof-string-instance "yo" globals)))
       (assert-equal? "yo" (woof-object-prim-data w-string)))))
 
 (lambda ()
   "Test create a List object"
   (let ((globals (new-woof-globals)))
     (init-woof-globals! globals)
     (let ((w-list (woof-list-instance '(1 2 3 4) globals)))
       (assert-equal? '(1 2 3 4) (woof-object-prim-data w-list)))))
 
 (lambda ()
   "Assert properties of define:over:as:"
   (let ((globals (new-woof-globals)))
     (init-woof-globals! globals)
     (let ((func (first (functions-by-sig "define:over:as:" globals))))
       (assert-equal? (list (class-by-name "String" globals)
			    (class-by-name "List" globals)
			    (class-by-name "Block" globals))
		      (woof-function-object-specs func))
       )))

 ))






